/*
 * Project Name:hbm-be.
 * File Name:CsSmNoticeMapper.java
 * Package Name:com.hginfo.cs.be.mapper.cs
 * Date:2018年04月24日 下午3:58:49
 * Copyright (c) 2016, hongguaninfo.com All Rights Reserved.
 *
 */
package cn.uce.common.omg.dao.impl;

import cn.uce.base.page.Page;
import cn.uce.base.page.Pagination;
import cn.uce.base.vo.IcsOrgTreeNodeVo;
import cn.uce.base.vo.IcsOrgVo;
import cn.uce.core.db.IBaseDao;
import cn.uce.web.authorg.entity.Org;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 公告表: cs_sm_notice。 <br />
 * mapper 层 <br />
 * Date: 2018年04月24日 下午3:58:49 <br />
 *
 * @author you
 * @since V1.0.0
 */

@Repository("omgOrgDao")
public interface IOmgOrgDao extends IBaseDao<Org, Long> {
    /**
     * 根据乾坤机构基准编码查询乾坤机构信息
     * @param baseOrgCode
     * @return
     */
    IcsOrgVo getOrgInforByCmsBaseOrgCode(String baseOrgCode);

    /**
     * 根据乾坤机构基准编码查询乾坤及行政机构信息
     * @param baseOrgCode
     * @return
     */
    IcsOrgVo getOrgAndCmsOrgInforByCmsBaseOrgCode(String baseOrgCode);

    /**
     * @Description: (查询乾坤机构树节点)
     * @param orgVo
     * @return
     * @author XJ
     * @date 2017年8月10日 上午9:54:04
     */
    List<IcsOrgTreeNodeVo> findOrgTreeNode(IcsOrgVo orgVo);

    /**
     * 根据网点查询所属中心编码
     * @param websiteCode
     * @return
     */
    String findCenterOrgCodeByWs(String websiteCode);

    /**
     * 根据承包区查询所属网点
     * @param contractCode
     * @return
     */
    IcsOrgVo findWebSiteByContract(String contractCode);

    /**
     * 获取操作中心编码
     * @param
     * @return
     */
    String findOpreateCenterOrgCode(String baseOrgCode);

    /**
     * 获取财务中心编码
     * @param
     * @return
     */
    String findFinanceCenterOrgCode(String baseOrgCode);

    /**
     * 获取所有的网点信息
     * @return
     */
    List<IcsOrgTreeNodeVo> findOrgCodeWebsite(IcsOrgVo icsOrgVo);

    /**
     * 根据机构类型查询机构信息
     * @param icsOrgVo
     * @return
     */
    List<IcsOrgVo> findOrgCmsByOrgType(IcsOrgVo icsOrgVo);

    /**
     * 根据机构类型查询机构信息
     * @param icsOrgVo
     * @return
     */
    Pagination<IcsOrgVo> findOrgCmsByOrgTypePage(IcsOrgVo icsOrgVo, Page page);

    /**
     * 根据乾坤机构id查询乾坤机构信息
     * @param cmsOrgId
     * @return
     */
    IcsOrgVo getCmsOrgInforByCmsOrgId(Integer cmsOrgId);


    /**
     * 根据乾坤机构 机构基准编号 查询机构信息 查库的形式 查询全部状态的
     * @param baseOrgCode
     * @return
     */
    IcsOrgVo getOrgInforByCmsBaseOrgCodeAllStatus(String baseOrgCode);

    /**
     * 根据机构类型查询机构信息 查询全部状态的
     * @param icsOrgVo
     * @return
     */
    List<IcsOrgVo> findOrgCmsByOrgTypeAllStatus(IcsOrgVo icsOrgVo);

    /**
     * 查询某个网点同中心的不包含自己的网点或者查询某个中心不包含自己的所有的财务中心
     * @param icsOrgVo
     * @return
     */
    List<IcsOrgVo> getOrgOfNotSelf(Map<String, Object> icsOrgVo);

	List<IcsOrgVo> findAllOrg(Map<String, Object> orgMap);

	List<IcsOrgVo> findOrgByOrgCode(Map<String, Object> orgMap);

	List<IcsOrgVo> fingEmpOrgByEmpCode(String empCode);

	IcsOrgVo fingOrgByOrgCode(Map<String, Object> map);

	Pagination<IcsOrgVo> fingAllEmpOrg();

	List<IcsOrgVo> fingOmgOrgByCode(Map<String, Object> map);

	IcsOrgVo findOmgOrgByEmpCode(String empCode);

	List<IcsOrgVo> findAllProvinceOrg(Map<String, Object> orgMap);

	List<IcsOrgVo> findAllCmsOrg(Map<String, Object> map);

	List<IcsOrgVo> findAllFinanceCenter();

	List<String> findOperateOrg(String orgName);

    String findOrgNameByOrgId(String orgId);

	IcsOrgVo findOrgByCode(Map<String, Object> map);

	Pagination<IcsOrgVo> findByByCondition(IcsOrgVo omgCmsOrgVo, Page page);
	List<String> findOrgByParentByOrgCode(String cmsBaseOrgCode);
	String findCmsOrgByOrgType(String cmsBaseOrgCode);

    /**
     * 根据机构名称查询乾坤机构编码
     * @param orgName
     * @return
     */
    String getOrgInforByCmsBaseOrgName(String orgName);

    List<String> findBaseOrgCodeByParentOrgCode(String cmsBaseOrgCode);

	List<String> findBaseOrgCodeByFinanceOrgCode(String cmsBaseOrgCode);

	Pagination<IcsOrgVo> findAllOrgByPage(IcsOrgVo omgCmsOrgVo, Page page);

    /**
     * 查询承包区/网点的所属财务中心和网点
     *
     * @return java.util.List<cn.uce.ics.base.vo.omg.IcsOrgVo>
     * @Author zhuzhaoyang
     * @Date 2019/11/27 16:02
     * @Param [param]
     **/
	List<IcsOrgVo> findFinanceCenterAndAccCode(Map<String, Object> param);

	/**
	 * 根据机构基准编码查询机构名称
     *
	 * @return java.util.List<cn.uce.ics.base.vo.omg.IcsOrgVo>
	 * @Author zhuzhaoyang
	 * @Date 2019/11/27 16:39
	 * @Param [baseOrgCodes]
	 **/
    List<IcsOrgVo> findOrgNamesByBaseOrgCodes(@Param("baseOrgCodes") List<String> baseOrgCodes);
}
